# *- coding: utf-8 -*-
###首次使用定位点击的坐标
#import win32api;win32api.GetCursorPos()
####注意将打开窗口调小到不会挡住点击
#pwa_app = pywinauto.application.Application()
###经验证同一链接点击次数太多，微信限制不发送请求
import pymysql
import pyperclip
import pywinauto, win32clipboard
#import pywinauto.clipboard
import win32api
import win32con
import time,os#,sys
from time import sleep
####当前程序的ID，都程序抓取key时，进行分工
HOST='47.90.36.179'  ##key值集中存放在1号机子
print(HOST)
command_cls="\"C:\Program Files (x86)\Fiddler2\ExecAction.exe\" cls" #清楚抓包工具上的所有显示信息命令
os.system(command_cls)  #os.system执行命令
command_copy="\"C:\Program Files (x86)\Fiddler2\ExecAction.exe\" ctrl+c"####fiddler命令，自制的，实现复制当前抓包的链接
PosXY1=[1321,814]
PosXY2=[1560, 652]

url="http://mp.weixin.qq.com/mp/ad_biz_info?__biz=MzIwMDc5ODIzNg==&sn=1f512fbda0882fa7ad021ab373a42215&ticket=27vq6wz48s2gt&gdt_vid=wx0svnz7vaw5nvto00&weixinadinfo=5858152.wx0svnz7vaw5nvto00.0.1#wechat_redirect"

interval=120*0.5   #停顿的秒数

def getkey():
    wxcommand_cls="\"C:\Program Files (x86)\Tencent\WeChat\WeChat.exe\" cls" #清楚抓包工具上的所有显示信息命令
    os.system(wxcommand_cls)
    conn= pymysql.connect(host='localhost', port=3306, db='weixinla',user='root', passwd='')
    cursor = conn.cursor()
    ##首次打开微信
    #app = pywinauto.application.Application()
    app = pywinauto.application.Application().Start(cmd_line=u'"C:\Program Files (x86)\Tencent\WeChat\WeChat.exe" ') #获得微信客户端程序窗口
    w_handle = pywinauto.findwindows.find_windows(title=u'\u5fae\u4fe1', class_name='WeChatMainWndForPC')[0]    #获得需要操作的微信客户端部分
    window = app.window_(handle=w_handle)
    pyperclip.copy(url) #将url复制到剪切板
    #pyperclip.paste() 
    ##第一次点击
    win32api.SetCursorPos(PosXY1) #将鼠标移动到固定位置（这里是微信发送窗口位置）
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN|win32con.ABSOLUTE, 0, 0)  #按下左边鼠标
    time.sleep(0.1)      
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP|win32con.ABSOLUTE, 0, 0)  #提起左边鼠标
    #time.sleep(0.01) 
    #time.sleep(0.01)
    window.TypeKeys("^V") #ctrl+V 粘贴内容到微信发送窗口
    time.sleep(0.3) ####这个时间设置太快会漏发送
    window.TypeKeys("%S") #alt +S  发送窗口病发送  发送
    time.sleep(0.3)
    ###
    ### 将光标移动到发送的链接位置上并点开链接
    ### 这个时候 微信会redirect个新的地址，里面就包含了key和其他关键的字段
    ###
    win32api.SetCursorPos(PosXY2)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN|win32con.ABSOLUTE, 0, 0)
    time.sleep(0.1)      
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP|win32con.ABSOLUTE, 0, 0)
    time.sleep(0.1)####等待时间设置太短，容易丢包
    sleep(5)##fiddler反应有些慢，停顿一下              
    
    win32api.SetCursorPos([369,118]) #将鼠标移动到固定位置（这里是微信发送窗口位置）
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN|win32con.ABSOLUTE, 0, 0)  #按下左边鼠标
    time.sleep(0.1)      
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP|win32con.ABSOLUTE, 0, 0)  #提起左边鼠标
    ###os.system("command_copy")  ###复制到黏贴板
    sleep(1)
    win32api.keybd_event(17,0,0,0)  #ctrl键位码是17
    sleep(0.1)
    win32api.keybd_event(67,0,0,0)  #C键位码是67
    sleep(0.3)
    win32api.keybd_event(67,0,win32con.KEYEVENTF_KEYUP,0) #释放按键
    sleep(0.1)
    win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0)
    sleep(0.8)
    urllist=pyperclip.paste().split("\r\n")
    print(urllist);
    #print urllist
    for line in urllist:
        if line.find("key=")==-1: continue
        #print line
        ############以下是必备字段
        key=line.split("key=")[1].split("&")[0]
        uin=line.split("uin=")[1].split("&")[0]
        cursor.execute("select * from wx_wnkey where id=1")
        cnt=int(cursor.rowcount)
        #print cnt
        if cnt ==0:
            #print "insert into wx_wnkey(ID,wnkey,uin) values("+str(ID)+",'"+key+"','"+uin+"')"
            cursor.execute("insert into wx_wnkey(wnkey,uin) values('"+key+"','"+uin+"')")
        else:
            #print "update wx_wnkey set wnkey='"+ key+"',id="+str(ID)+",inserttime='"+str(inserttime)+"' where id="+str(ID)
            cursor.execute("update wx_wnkey set uin='"+uin+"'"+",wnkey='"+ key+"' where id=1")
        conn.commit()
        cursor.close()
           
getkey();i=1;curtime=time.time()
while True:
    if time.time()>curtime+interval:
        i=i+1
        getkey()
        curtime=time.time()
    sleep(30)      


